# 准备数据集
#paddlex:百度飞浆虚拟环境
# transforms：类似于在计算机视觉流程里的图像预处理部分的数据增强。
import paddlex as pdx
from paddlex import transforms as T

#Compose():是组合函数，就是将下面输入的函数组合到一起，最后一个函数可以接受多个参数，前面的函数只能接受单个参数；后一个的返回值传给前一个
#
train_transforms = T.Compose([
    #MixupImage():是混合图片函数
    T.MixupImage(mixup_epoch=-1),
    #RandomDistort():对混合后的图片，随机排序
    T.RandomDistort(),
    #RandomExpand的英语意思是随机化的，Expand是扩大的意思
    T.RandomExpand(im_padding_value=[123.675, 116.28, 103.53]),
    #RamdomCrop的英语意思是随机作物，Crop是作物
    T.RandomCrop(),
    #RandomHorizontalFlip的英语意思是随机水平翻转，HorizontalFlip是水平翻转的意思
    T.RandomHorizontalFlip(),
    # Resize（）用于对PIL图像的预处理
    #Bath的意思是一批
    #BathRadomHorizontalFlip的中文意思是对一批图像进行 PIL预处理
    T.BatchRandomResize(
        target_sizes=[320, 352, 384, 416, 448, 480, 512, 544, 576, 608],
        interp="RANDOM"),
    #Normalize的中文意思是规范化
    T.Normalize(
        mean=[0.46157165, 0.46698335, 0.46580717], std=[0.28069802, 0.28096266, 0.28323689])
])

eval_transforms = T.Compose([
    #Resize():函数是图像的缩放
    T.Resize(
        target_size=608, interp="CUBIC"),
    #Normalize（）:函数把需要处理的数据经过处理后 (通过某种算法)限制在你需要的一定范围内
    T.Normalize(
        mean=[0.46157165, 0.46698335, 0.46580717], std=[0.28069802, 0.28096266, 0.28323689])
])
#pdx.datasets.CocoDetection的作用是软链接数据集
train_dataset = pdx.datasets.CocoDetection(
    data_dir="train/200",
    ann_file="train/200/train.json",
    transforms=train_transforms,
    shuffle=True)
eval_dataset = pdx.datasets.CocoDetection(
    data_dir="train/200",
    ann_file="train/200/val.json",
    transforms=eval_transforms)